package cn.glinks.liuhe.activity;

import android.os.Bundle;
import android.support.v4.content.ContextCompat;
import android.widget.TextView;

import cn.glinks.liuhe.widget.iOSDialog;
import cn.glinks.liuhe.widget.iOSDialog.DialogClickListener;
import java.util.ArrayList;
import java.util.List;

import butterknife.BindView;
import butterknife.OnClick;
import cn.glinks.liuhe.R;
import cn.glinks.liuhe.api.ApiConstants;
import cn.glinks.liuhe.api.ApiRequest;
import cn.glinks.liuhe.api.jsonbean.UserInfo;
import cn.glinks.liuhe.api.parser.GlkProtocolParser;
import cn.glinks.liuhe.app.AppApplication;
import cn.glinks.liuhe.base.BaseActivity;
import cn.glinks.liuhe.baserx.RxSubscriber;
import cn.glinks.liuhe.model.Question;
import cn.glinks.liuhe.utils.ActTransAnimUtils;
import cn.glinks.liuhe.utils.GsonUtils;
import cn.glinks.liuhe.utils.ToastUtils;

public class TestPromptActivity extends BaseActivity {

  @BindView(R.id.tv_test_1)
  TextView mTestOneButton;

  @BindView(R.id.tv_test_2)
  TextView mTestTwoButton;

  @BindView(R.id.tv_test_3)
  TextView mTestThreeButton;

  // 变量
  private UserInfo mUserInfo;
  private List<Question> mQuestionList = new ArrayList<>();// 题目缓存
  private int mTestIndex = 1;// 测试编号

  @Override
  public int getLayoutId() {
    return R.layout.activity_test_prompt;
  }

  @Override
  public void initView(Bundle savedInstanceState) {
    // 加载用户信息
    mUserInfo = ((AppApplication) getApplicationContext()).getLoginUser();
    // 设置为透明状态栏
    SetTranslanteBar();
    // 默认选择测试1
    switchTest(1);
    // 根据单位类型不同处理
    if (mUserInfo.getUser().getUnitCode().equals("S8001")) { // 富士康
      iOSDialog.showRadioDialog(TestPromptActivity.this, "温馨提示",
          "各位富士康同仁，您好！集团工会特邀心理专家为您提供本次健康服务，"
              + "旨在让您更好的了解自己，并关注自身心理健康。本次健康服务结果不对外披露，"
              + "仅限本人可见，您可通过测评结果提升自我认识并根据指导建议改善生活，"
              + "同时还可以根据自身需要寻求集团咨询师后续量身定制的心理保健服务。"
              + "请您根据真实情况按要求放心填写。",
          new DialogClickListener() {
            @Override
            public void confirm() {

            }

            @Override
            public void cancel() {

            }
          });
    }
  }

  /**
   * Des:选择测试项视图切换
   *
   * @param index 1~3
   */
  private void switchTest(int index) {
    mTestIndex = index;
    if (index == 1) {
      mTestOneButton.setBackgroundResource(R.drawable.btn_1_bg_green);
      mTestOneButton.setTextColor(ContextCompat.getColor(this, R.color.text_white));
      mTestTwoButton.setBackgroundResource(R.drawable.btn_1_bg_gray);
      mTestTwoButton.setTextColor(ContextCompat.getColor(this, R.color.btn_text_gray));
      mTestThreeButton.setBackgroundResource(R.drawable.btn_1_bg_gray);
      mTestThreeButton.setTextColor(ContextCompat.getColor(this, R.color.btn_text_gray));
    } else if (index == 2) {
      mTestOneButton.setBackgroundResource(R.drawable.btn_1_bg_gray);
      mTestOneButton.setTextColor(ContextCompat.getColor(this, R.color.btn_text_gray));
      mTestTwoButton.setBackgroundResource(R.drawable.btn_1_bg_green);
      mTestTwoButton.setTextColor(ContextCompat.getColor(this, R.color.text_white));
      mTestThreeButton.setBackgroundResource(R.drawable.btn_1_bg_gray);
      mTestThreeButton.setTextColor(ContextCompat.getColor(this, R.color.btn_text_gray));
    } else if (index == 3) {
      mTestOneButton.setBackgroundResource(R.drawable.btn_1_bg_gray);
      mTestOneButton.setTextColor(ContextCompat.getColor(this, R.color.btn_text_gray));
      mTestTwoButton.setBackgroundResource(R.drawable.btn_1_bg_gray);
      mTestTwoButton.setTextColor(ContextCompat.getColor(this, R.color.btn_text_gray));
      mTestThreeButton.setBackgroundResource(R.drawable.btn_1_bg_green);
      mTestThreeButton.setTextColor(ContextCompat.getColor(this, R.color.text_white));
    }
  }


  /*--------------------------------------------------------------------------------
   *                          点击事件接口实现
   ---------------------------------------------------------------------------------*/
  // 选择测试1
  @OnClick(R.id.tv_test_1)
  public void clickTest1() {
    switchTest(1);
  }

  // 选择测试2
  @OnClick(R.id.tv_test_2)
  public void clickTest2() {
    //switchTest(2);
  }

  // 选择测试3
  @OnClick(R.id.tv_test_3)
  public void clickTest3() {
    //switchTest(3);
  }

  // 根据选择的测试编号,请求试题,开始测评
  @OnClick(R.id.btn_confirm)
  public void clickStartTest() {
    //TODO:根据编号请求不同的测试题
    int index = mTestIndex;
    // 发送网络请求
    mRxManager.add(ApiRequest.requestGetQuestions(mUserInfo.getJwt(),
        mUserInfo.getTestTask().getTestTaskId() + "",
        mUserInfo.getTestTask().getBeiginTime(),
        mUserInfo.getTestTask().getEndTime())
        .subscribe(new RxSubscriber<String>(mContext) {
          @Override
          protected void _onNext(String msg) {
            if (GsonUtils.getIntValue(msg, "error") == 0) {
              ToastUtils.showShort("获取试题成功");
              // 将试题数据缓存到全局变量
              String result = GsonUtils.getValue(msg, "result");
              ((AppApplication) getApplicationContext()).setQuestions(result);
              // 解析响应
              if (GlkProtocolParser.parseGetQuestions(result, mQuestionList)) {
                // 跳转到测评主页面
                ActTransAnimUtils
                    .startActionSlideRightToLeft(TestPromptActivity.this, MainActivity.class);
              } else {
                // TODO:处理错误响应
                ToastUtils.showShort("解析试题失败:" + msg);
              }
            } else {
              String reason = GsonUtils.getValue(msg, "reason");
              ApiConstants.showError(reason);
            }
          }

          @Override
          protected void _onError(String message) {
            // TODO:处理失败响应
            ToastUtils.showShort("获取试题失败:" + message);
          }
        }));
  }

}
